// 对除了登录的其他页面进行登录验证
import React from 'react';
import url from "../config/url"
import req from "../http/req"
import { Redirect } from "react-router-dom"
const Checklogin = (Cmp) => {
  return class NewCmp extends React.Component{
    state = {
      isLogin: false,
      isFinish: false
    }
    render() {
      // 因为请求是异步操作，所以this.state.isLogin可能没有得到请求后的数据
      // 所以使用一个变量：isFinish
      // 只有当isFinish和isLogin都是true的时候，才表示已经登录
      return this.state.isFinish ? this.state.isLogin ? <Cmp {...this.props} /> : <Redirect to="/login" /> : <></>
    }
    componentDidMount() {
      // jwt预检（二次服务端验证）
      // ANY:表示请求类型不限
      req.get(url.JwtCheck).then(res => {
        if(res.data.errNo === 0) {
          // 登录
          this.setState({
            isLogin: true,
            isFinish: true
          })
        }else {
          // 没有登录
          this.setState({
            isLogin: false,
            isFinish: true
          })
        }
      })
    }
  }
}

export default Checklogin;
